//用于进行测试
#include <iostream> 
#include <unistd.h>
#include <signal.h>
//setrlimit用于限制资源使用
#include <sys/time.h>
#include <sys/resource.h>
//jsoncpp库用于序列化处理
#include <jsoncpp/json/json.h>
//boost库中的split用于字符串切割 
#include <boost/algorithm/string.hpp>
//ctemplate库的使用（渲染网页、文本替换）
#include <ctemplate/template.h>

int main()
{
    std::string in_html = "./test.html";
    std::string value = "你好";

    //1.创建字典
    ctemplate::TemplateDictionary root("test");   //相当于创建一个哈希
    root.SetValue("key",value);     //key会被value替换

    //2.获取被渲染网页                                                       保持网页原貌
    ctemplate::Template* tpl = ctemplate::Template::GetTemplate(in_html,ctemplate::DO_NOT_STRIP);

    //3.添加数据词典到网络中
    std::string out_html;
    tpl->Expand(&out_html,&root);

    std::cout << out_html << std::endl;

    return 0;
}

// //测试split
// int main()
// {
//     std::string s = "1\r\n4\r\n";
//     std::string sep = "\r\n";
//     std::vector<std::string> out;
//     boost::split(out,s,boost::is_any_of(sep),boost::token_compress_on);
//     for(auto e:out)
//     {
//         std::cout << e << std::endl;
//     }
//     return 0;
// }


// // 测试jsoncpp库
// int main()
// {
//     Json::Value root;
//     //Json::StyledWriter writer;
//     Json::FastWriter writer;
//     root["name"] = "black";
//     root["sex"] = "female";
//     root["age"] = 18;
//     writer.write(&root);

//     std::cout << root << std::endl;

//     return 0;
// }

// 测试setrlimit
// static void handler(int code)
// {
//     std::cout << "退出码为：" << code << std::endl;
// }

// int main()
// {
//     //测试一下退出信号是多少
//     for(int i = 1;i <= 31;i++)
//     {
//         signal(i,handler);
//     }


//     //cpu时间限制
//     // struct rlimit r;
//     // r.rlim_cur = 2;  //2秒的限制
//     // r.rlim_max = RLIM_INFINITY;  //无限制
//     // setrlimit(RLIMIT_CPU,&r);

//     //内存限制
//     struct rlimit r;
//     r.rlim_cur = 1024 * 1024 * 40;
//     r.rlim_max = RLIM_INFINITY;
//     setrlimit(RLIMIT_AS,&r);

//     int count = 0;
//     while(1) 
//     {
//         int *p = new int[1024*1024];
//         count++;
//         std::cout << "size:" << count << std::endl;
//         sleep(1);
//     }
//     return 0;
// }